import java.util.ArrayList;
import java.util.List;

/**
 * 对于非负整数X而言，X的数组形式是每位数字按从左到右的顺序形成的数组。例如，如果X = 1231，那么其数组形式为[1,2,3,1]。
 *
 * 给定非负整数 X 的数组形式A，返回整数X+K的数组形式。
 *
 * 示例 1：
 * 输入：A = [1,2,0,0], K = 34
 * 输出：[1,2,3,4]
 * 解释：1200 + 34 = 1234
 *
 * 示例 2：
 * 输入：A = [2,7,4], K = 181
 * 输出：[4,5,5]
 * 解释：274 + 181 = 455
 *
 * 示例 3：
 * 输入：A = [2,1,5], K = 806
 * 输出：[1,0,2,1]
 * 解释：215 + 806 = 1021
 *
 * 示例 4：
 * 输入：A = [9,9,9,9,9,9,9,9,9,9], K = 1
 * 输出：[1,0,0,0,0,0,0,0,0,0,0]
 * 解释：9999999999 + 1 = 10000000000
 *
 * 提示：
 * 1 <= A.length <= 10000
 * 0 <= A[i] <= 9
 * 0 <= K <= 10000
 * 如果A.length > 1，那么A[0] != 0
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/add-to-array-form-of-integer
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Q00989s {
    public List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> ans, rs = new ArrayList<>();
        int jw = 0, idx = num.length - 1;
        while (k != 0 || idx >= 0) {
            int x = k % 10;
            int y = (idx >= 0 ? num[idx] : 0) + x + jw;
            if (y < 10) {
                rs.add(y);
                jw = 0;
            } else {
                rs.add(y - 10);
                jw = 1;
            }
            idx--;
            k /= 10;
        }
        if (jw > 0) {
            rs.add(jw);
        }
        ans = new ArrayList<>(rs.size());
        for (int i = rs.size() - 1; i >= 0; i--) {
            ans.add(rs.get(i));
        }
        return ans;
    }
}
